//
//  viewModel.swift
//  RXmvvmDemo
//
//  Created by jemi on 2019/12/20.
//  Copyright © 2019 jemi. All rights reserved.
//

import Foundation
import RxSwift
import RxCocoa

//protocol ViewModelType {
//  associatedtype Input
//  associatedtype Output
//
//  func transform(input: Input) -> Output
//}

class ViewModel{
    // 输入转化输出，这里是真正的业务逻辑代码了
    func transform(input: Input) -> OutPut {
        let output = OutPut(ob: Observable.create({ (oberver) -> Disposable in
          _ = input.btn.subscribe(onNext: { () in
            if input.accoutTFText.value.count < 5 {
                 print("长度不够")
                 return
            }
               print("网络请求或者其他的")
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 5) {
                print("  网络请求成功   ")
                oberver.onNext("网络数据")
            }
            })
            return Disposables.create()
        }))
        return output
    }
}

extension ViewModel{
    // 输入，类型是Driver，因为跟UI控件有关
    struct Input {
        var accoutTFText = BehaviorRelay(value: "")
        var btn:RxCocoa.ControlEvent<Void>

        
    }
    // 输出，类型也是Driver
    struct OutPut {
        var ob: Observable<Any>
    }
}
